package ar.edu.utn.frba.dds.fechas;

//import java.lang.Exception;
//import ar.edu.utn.frba.dds.tests.FormatoInvalido;

public class ISO implements Formato {
	
	public ISO () {
		super();
	}
	
	public /*Fecha*/void generarFecha (String cadenaFecha) {
		try {
		this.verificarISO(cadenaFecha);	
		String[] cadVec = this.vectorizarFecha(cadenaFecha); //cambiar el string por una variable
	    Fecha fecha = new Fecha(cadVec);
		System.out.println("Día: " + fecha.getDate() + " , Mes: " + fecha.getMonth() + " , Año: " + fecha.getYear());
		//acá difiere en que al sistema le devuelve el objeto fecha creado
	    /*return fecha;*/
		}
		catch (ErrorDeFormato e) {
		             System.out.println(e.getMessage());
		}
	
	
	}

	
	
	
	public String[] vectorizarFecha(String stringFecha) {
		
		String cadenaFecha = stringFecha;
		String delims = "[-]";
		String[] tokens = cadenaFecha.split(delims);
			return tokens;
	}
	
	
	public void verificarISO (String cadenaFecha) {
		char[] arrayFecha;
	   	arrayFecha = cadenaFecha.toCharArray();
		int[] meses31 = {1,3,5,7,8,10,12};
		int[] meses30 = {4,6,9,11};
		
	   	
		if ((arrayFecha[4] == '-') && (arrayFecha[7] == '-')) {
		String[] stgCadenaFechaArray = this.vectorizarFecha(cadenaFecha);
		int dd = Integer.parseInt(stgCadenaFechaArray[2]);
		int mm = Integer.parseInt(stgCadenaFechaArray[1]);
		int yyyy = Integer.parseInt(stgCadenaFechaArray[0]);
		Bisiesto bisiesto = new Bisiesto();
		
			if ((meses31.equals(mm) && (dd <= 31)) 
			    || 
			    (meses30.equals(mm) && (dd <= 30)) 
			    || 
			    ((mm == 2) && ( (dd <= 28) || (bisiesto.esBisiesto(yyyy) && dd <= 29)))
			    ){
			//this.generarFecha(cadenaFecha);
				
			}
			
		}
		else {
			throw new ErrorDeFormato("No concuerda con el formato ISO");
		}
		
	}
			
}